/* =============迭代器的values操作============ */
let arr1 = [{name:'李白'},{name:'杜甫'}]
let values1 = arr1.values()
while(({done,value}=values1.next())&&!done){
    // console.log('value：',value)
    /**
     * value： { name: '李白' }
     * value： { name: '杜甫' }
    */
}

/* =============遍历的every操作============ */
// 只有全满足了才返回真，只要其中一个不满足，就返回假
let arr2 = [{name:'李白',age:300},{name:'杜甫',age:400}]
let isFlag1 = arr2.every((item)=>{
    return item.age > 350
})
// console.log('遍历的every操作:',isFlag1) //  false


/* =============遍历的some操作============ */
// 只要其中一个返回真，函数就返回真，否则返回假
let arr3 = [{name:'李白',age:300},{name:'杜甫',age:400}]
let isFlag2 = arr3.some((item)=>{
    return item.age > 350
})
// console.log('遍历的some操作:',isFlag2) //  true


/* =============遍历的reduce操作============ */
// 第一个参数是上一次的返回值，默认值是数组的第一个元素，也可以设置默认值
let arr4 = [{name:'李白',age:300},{name:'李大娘',age:100},{name:'杜甫',age:400},{name:'李大爷',age:250}]

// reduce实例1：
let tempArr41 = arr4.reduce((pre,nextValue) => {
    // pre初始值是第一个元素,nextValue初始值是第二个元素
    return pre.age > nextValue.age ? pre : nextValue
})
// console.log('reduce做筛选最大值:',tempArr41)
/**
 *  { name: '杜甫', age: 400 }
 * 
*/

// reduce实例2：
let tempArr42 = arr4.reduce((pre,nextValue) => {
    // pre初始值是[],nextValue初始值是第一个元素
    nextValue.age > 200 ? pre.push(nextValue) : pre
    return pre
},[])
// console.log('reduce做筛选满足条件的值:',tempArr42)
/**
 *  { name: '李白', age: 300 },
 *  { name: '杜甫', age: 400 },
 *  { name: '李大爷', age: 250 }
 * 
*/

// reduce实例3去重：
let testArr4 = [
    {name:'李白',age:300},
    {name:'李大娘',age:100},
    {name:'李大娘',age:100},
    {name:'李白',age:300},
    {name:'杜甫',age:400},
    {name:'李大爷',age:250}
]

function unRepeat(data) {

  return  data.reduce((pre,nextValue) => {
      let temp = pre.find((v) => {
            return JSON.stringify(nextValue) === JSON.stringify(v)
        })
        if (!temp) pre.push(nextValue)
        return pre
    },[])
}
console.log('去重:',unRepeat(testArr4))

/* [
    { name: '李白', age: 300 },
    { name: '李大娘', age: 100 },
    { name: '杜甫', age: 400 },
    { name: '李大爷', age: 250 }
  ] 
  */